A barcode is a machine readable symbol made up of parallel solid lines of bars and spaces of varying width. The bars and spaces form alternate light and dark areas representing a digital code that contains the information represented by the barcode symbol. The digital code is translated to alpha numeric characters which may represent information about the item bearing the barcode label such as price, date, manufacturer and other information. Barcodes are typically read by scanning with a small spot of light. The reflected light is sensed by a photosensitive element as the spot sweeps across the barcode surface. The change in reflectance caused by the black and white bars and spaces varies the intensity of the reflected light which serves as a representation of the barcode symbol. In one type of barcode reader a two-dimensional image containing the barcode is captured and stored in the general purpose computer memory where pairs of parallel scan lines are then processed to determine the location and orientation of the barcode. This approach to locating the barcode requires computing the point by point product of the derivatives of the two parallel scan lines. The image is scanned in each of four directions, horizontal, vertical, rising diagonal and falling diagonal in order to locate and coarsely orient the barcode. Further fine orientation of the barcode is accomplished by cross correlating the parallel scan lines in pairs. This approach uses an application specific integrated circuit (ASIC) to determine the location and coarse orientation of a barcode and subsequent digital signal processing to more finely orient, filter, and scan the coarsely located barcode. One of the shortcomings of this approach is that most of the data captured by the camera in such a case is a useless image of the conveyor and the non-barcode bearing areas of the parcels moving along the conveyor: only a small percentage of the image data includes the barcodes. In another approach, the barcode reader requires and ASIC and one or more field programmable gate arrays (FPGAs) to obtain a pixelized image and then compare the intensity of pixels in a current row to that of pixels in previous rows in different relationships to the current row to obtain detection values that are compared to a threshold value to determine whether the information being viewed is potentially part of a barcode. This approach, like the earlier one, employs significant hardware and requires a substantial amount of time to accumulate and operate on the data.